package com.bw.demo_flow

import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.*
import kotlinx.coroutines.runBlocking

/**
 * @Author : ZhouZiYao
 * @Time : On 2023/11/15 14:26
 * @Description :
 *
 * RxJava操作符: 对数据进行操作
 * 1.map
 * 2.flatMap
 * 3.concatMap
 * 4.filter
 *
 * FLow常用操作符
 * 1.map: 将一个值映射为另一个值
 * 2.filter: 过滤掉不符合条件的值
 * 3.onEach: 遍历
 * 4.debounce
 */

fun main() {
    //简单操作符
//    runBlocking {
//
//        val flow = flowOf(1,2,3,4,5) //创建一个流
//
//        flow.filter {
//            it % 2 == 0
//        }.onEach {
//            println(it)
//        }.map {
//            it * 2
//        }.collect {
//            println(it)
//        }
//
//    }

    runBlocking {
        flow {
            emit(1)
            emit(2)
            delay(3000)
            emit(3)
            delay(1000)
            emit(4)
            delay(2000)
            emit(5)
        }
        .debounce(3000)
       .collect {
            println(it)
        }
    }

}